/*
 * File Name：HttpRequest.java
 * Copyright：Copyright 2008-2014 CiWong.Inc. All Rights Reserved.
 * Description： HttpRequest.java
 * Modify By：bin
 * Modify Date：2014年11月6日
 * Modify Type：Add
 */
package com.ciwong.libs.utils.volley;

import java.util.HashMap;
import java.util.Map;

import com.android.volley.AuthFailureError;
import com.android.volley.Response.ErrorListener;

/**
 * Http网络请求
 * 
 * @author bin
 * @version ciwong v.1.0 2014年11月6日
 * @since ciwong v.1.0
 */
public class HttpRequest extends BaseRequest
{

    /**
     * 是否需要返回GZIP压缩数据
     */
    private boolean isGZIP;

    /**
     * 
     * 构造函数
     * 
     * @param url
     *            自定义网络请求地址
     * @param errorListener
     *            网络请求错误响应回调接口
     * @param callback
     *            网络请求响应回调接口
     */
    public HttpRequest(String url, ErrorListener errorListener,
            ResponseCallback callback)
    {
        super(url, errorListener, callback);
    }

    /**
     * 
     * 构造函数
     * 
     * @param method
     *            请求方法
     * @param url
     *            自定义网络请求地址
     * @param errorListener
     *            网络请求错误响应回调接口
     * @param callback
     *            网络请求响应回调接口
     */
    public HttpRequest(int method, String url, ErrorListener errorListener,
            ResponseCallback callback)
    {
        super(method, url, errorListener, callback);
    }

    /**
     * 
     * 构造函数
     * 
     * @param params
     *            请求参数
     * @param errorListener
     *            网络请求错误响应回调接口
     * @param callback
     *            网络请求响应回调接口
     */
    public HttpRequest(Map<String, String> params, ErrorListener errorListener,
            ResponseCallback callback)
    {
        this(true, params, errorListener, callback);
    }

    /**
     * 
     * 构造函数
     * 
     * @param isVerifyAction
     *            是否添加Verify动作
     * @param params
     *            请求参数
     * @param errorListener
     *            网络请求错误响应回调接口
     * @param callback
     *            网络请求响应回调接口
     */
    public HttpRequest(boolean isVerifyAction, Map<String, String> params,
            ErrorListener errorListener, ResponseCallback callback)
    {
        super(isVerifyAction, params, errorListener, callback);
    }

    /**
     * 
     * 构造函数
     * 
     * @param method
     *            请求方法
     * @param params
     *            请求参数
     * @param errorListener
     *            网络请求错误响应回调接口
     * @param callback
     *            网络请求响应回调接口
     */
    public HttpRequest(int method, Map<String, String> params,
            ErrorListener errorListener, ResponseCallback callback)
    {
        this(true, method, params, errorListener, callback);
    }

    /**
     * 
     * 构造函数
     * 
     * @param isVerifyAction
     *            是否添加Verify动作
     * @param method
     *            请求方法
     * @param params
     *            请求参数
     * @param errorListener
     *            网络请求错误响应回调接口
     * @param callback
     *            网络请求响应回调接口
     */
    public HttpRequest(boolean isVerifyAction, int method,
            Map<String, String> params, ErrorListener errorListener,
            ResponseCallback callback)
    {
        super(isVerifyAction, method, params, errorListener, callback);
    }

    @Override
    public Map<String, String> getHeaders() throws AuthFailureError
    {
        if (isGZIP)
        {
            Map<String, String> headers = new HashMap<String, String>();
            headers.put("Accept-Encoding", "GZIP");
            return headers;
        }
      
        return super.getHeaders();
    }

    /**
     * 
     * 是否GZIP压缩
     * 
     * @return 是否GZIP压缩
     */
    public boolean isGZIP()
    {
        return isGZIP;
    }

    /**
     * 
     * 请求数据是否添加GZIP压缩
     * 
     * @param isGZIP
     *            是否GZIP压缩
     */
    public void setGZIP(boolean isGZIP)
    {
        this.isGZIP = isGZIP;
    }
}
